'''
# 计算器项目
- 完全ai编程生成
- 提示词：
帮我实现一个Python的计算器程序，要求的功能如下
1、能够实现加减乘除四则运算
2、提供括号功能，允许用户输入括号表示优先级
3、提供删除和清空按钮
# 注意
- 请注意中文的格式编码问题
'''
'''
代码学习：
eval() 是 Python 的一个内置函数，它的主要功能是计算字符串形式的 Python 表达式并返回结果。让我详细解释一下：
基本功能：
将字符串形式的 Python 表达式转换为实际的 Python 代码并执行
返回表达式的计算结果
'''
import tkinter as tk
from tkinter import ttk

class Calculator:
    def __init__(self, root):
        self.root = root
        self.root.title("计算器")
        self.root.geometry("300x400")
        self.root.resizable(False, False)
        
        # 设置显示框
        self.display = tk.Entry(root, font=('Arial', 20), justify='right', bd=5)
        self.display.grid(row=0, column=0, columnspan=4, padx=5, pady=5, sticky='nsew')
        
        # 按钮文本
        self.buttons = [
            '(', ')', 'C', '←',
            '7', '8', '9', '/',
            '4', '5', '6', '*',
            '1', '2', '3', '-',
            '0', '.', '=', '+'
        ]
        
        # 创建按钮
        self.create_buttons()
        
        # 配置网格权重
        for i in range(5):
            self.root.grid_rowconfigure(i, weight=1)
        for i in range(4):
            self.root.grid_columnconfigure(i, weight=1)
            
    def create_buttons(self):
        row = 1
        col = 0
        for button_text in self.buttons:
            button = ttk.Button(
                self.root,
                text=button_text,
                command=lambda x=button_text: self.button_click(x)
            )
            button.grid(row=row, column=col, padx=2, pady=2, sticky='nsew')
            col += 1
            if col > 3:
                col = 0
                row += 1
                
    def button_click(self, value):
        current = self.display.get()
        
        if value == 'C':
            self.display.delete(0, tk.END)
        elif value == '←':
            self.display.delete(len(current)-1, tk.END)
        elif value == '=':
            try:
                result = eval(current)
                self.display.delete(0, tk.END)
                self.display.insert(tk.END, str(result))
            except:
                self.display.delete(0, tk.END)
                self.display.insert(tk.END, "错误")
        else:
            self.display.insert(tk.END, value)

if __name__ == "__main__":
    root = tk.Tk()
    app = Calculator(root)
    root.mainloop()
